package com.wiscamp.ninechapters.problems.application.dto.commands;

import com.wiscamp.ninechapters.ddd.CommandObject;
import com.wiscamp.ninechapters.problems.application.dto.vo.sets.SetProblemVO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 习题集
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class CreateProblemSetCommand extends CommandObject {

    /**
     * 习题集代码
     */
    private String setCode = "";

    /**
     * 习题集名称
     */
    private String setName = "";

    /**
     * 习题集类型编号
     */
    private int setTypeId = 0;

    /**
     * 习题集类型
     */
    @Deprecated
    private int setType = 0;

    /**
     * 规则编号
     */
    private long ruleId = 0;

    /**
     * 机构编号
     */
    private long organizationId;

    /**
     * 学科编号
     */
    private long subjectId = 0;

    /**
     * 总题数
     */
    private int problemsQuantity = 0;

    @Deprecated
    private int totalItemQuantity = 0;

    /**
     * 题分数
     * 为所有辖题的总分数，每题分数为难度值整除10，最低分数为1
     */
    private int totalScore = 0;

    /**
     * 答题时限
     * 每题做题时间为5分钟，总题数乘5
     */
    private int totalTimeLimit = 0;

    /**
     * 是否真题
     */
    private boolean trueProblem = false;

    /**
     * 难度值
     * 所有辖题的平均难度值
     */
    private int difficulty = 0;

    /**
     * 备注
     */
    private String remark = "";

    /**
     * 是否可用
     */
    private boolean active = true;

    /**
     * 创建用户
     */
    private long createUser = 0;

    /**
     * 编辑用户
     */
    private long editUser = 0;

    /**
     * 习题集中的题列表
     */
    private Collection<SetProblemVO> setProblems = new ArrayList<>();
}